struct A
{
  bool True(){return true;}
};

struct B
{
  A a;
  A* operator->(){return &a;}
};

struct C
{
  B b;
  B& operator->(){return b;}
};

int main()
{
  C c;
  assert(c->True());
}
